package com.atguigu.activemq.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;
//消息生产者编码
public class JmsProduce {
//    public static final String ACTIVEMQ_URL="tcp://124.70.84.192:61616";
public static final String ACTIVEMQ_URL="tcp://124.70.84.192:61616";
    public static final String QUEUE_NAME="queue_lemon";
    //先写死连接地址,tcp协议，以“tcp://”开头，端口号写后端进程端口号
    public static void main(String[] args) throws JMSException {
    //1、创建连接工厂,根据url地址
        //如果用户名密码都是默认的admin的话，连接可以用一个参数的构造方法，不然要用三个参数的构造方法，用户名密码url;
        ActiveMQConnectionFactory activeMQConnectionFactory=new ActiveMQConnectionFactory(ACTIVEMQ_URL);
    //2、通过连接工厂，获得连接connection并启动访问
        Connection connection = activeMQConnectionFactory.createConnection();
        connection.start();
    /*3、创建会话session
        参数1:是否开启事务；参数2:签收；*/
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
    //4、创建目的地(具体是队列queue还是主题topic),参数填队列名字；
        Queue queue = session.createQueue(QUEUE_NAME);
        Destination destination = session.createQueue(QUEUE_NAME);//也可以直接用目的地类
    //5、创建消息的生产者(提供者)
        MessageProducer messageProducer = session.createProducer(queue);
        messageProducer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
    //6、通过使用消息生产者生产3条消息发送到MQ的队列里面
        for (int i=1;i<4;i++){
            //7、创建消息（发送字符串）
            TextMessage textMessage = session.createTextMessage("我发送的第" + i + "条消息");
            textMessage.setStringProperty("c01","vip");
            textMessage.setIntProperty("vip",8);
            textMessage.setBooleanProperty("vip8",true);
            //textMessage.setByteProperty(...);
            //8、通过消息生产者把消息发送给MQ
            messageProducer.send(textMessage);
        }
    //关闭资源(正着开启，倒着关闭)
        messageProducer.close();
        session.close();
        connection.close();
        System.out.println("连接中断");
    }
}
